#include "WWDG.h"

// 窗口看门狗的早期中断
void WWDG_IRQHandler(void) {
    if (WWDG_GetFlagStatus() != RESET) {  // 检查WWDG是否触发了EWI中断

        WWDG_ClearFlag();        // 清除WWDG中断标志
    }
}

//窗口看门狗初始化
void WWDG_Init(void) {
    //开时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);

    //配置
    WWDG_SetPrescaler(WWDG_Prescaler_8);   //设置预分频系数
    WWDG_SetWindowValue(0X50);             //设置窗口值，喂狗不能早于0X50
    WWDG_Enable(0X7F);                     //计数器初值0X7F,启动WWDG

    // 配置:  允许窗口看门狗的早期中断触发:  值减到 0100 0000(再减一次超时咬人)的时候出发中断
    WWDG_ClearFlag();                      // 清除中断标志
    WWDG_EnableIT();                        // 使能WWDG早期唤醒中断(EWI)
    NVIC_EnableIRQ(WWDG_IRQn);              // 使能WWDG中断
}
